1. Field of the Invention
The present invention relates to apparatus, methodology, systems, and/or computer program product for persisting or replicating data in a distributed computing environment and, more particularly, relates to a file replication service (FRS) which utilizes a directory provider that controls a directory data base (DDB) distributed throughout a client-server computer storage network in combination with both file version variable observers, also distributed throughout the network, and syncing threads utilizable by each node in the network.
2. Description of Prior Art
Computer networks are having an ever-increasing impact on modern-day lifestyle for many people, as the Internet, for example, is demonstrating. The Internet is supported by a technological infrastructure including other networks which can also be utilized in non-Internet environments. These other computer networks, for example client-server storage networks, may not be as well known to the general public as the Internet, but nevertheless can provide very important data storage and retrieval functions in a wide variety of applications (e.g. banking and finance, traffic control, medical research, military applications, routine business, etc.) to the overall benefit of society. In a client-server storage network, a human user of the network can be conceptualized as the “client” who is being “served” by the network. And, within such a network, inanimate hardware/software sub-systems that are being “served” in some capacity by other such subsystems (“servers”) are also referred to as “clients” of those servers.
A client-server network today may typically be based on an object oriented computer system that employs one or more object-oriented computer languages such as C++, XML (eXtensible Markup Language), JAVA, and/or others. Briefly, an object, in computer software terms, is a dedicated area of memory which can be thought of as an impervious container holding both data and instructions within itself, both defining itself and its relationships to other objects in the computer system or network. Such object or node can send and receive messages to and from other objects, respond and react to such messages (e.g. commands) but shall normally be impervious to internal scrutiny. For example, in a computer data storage system (a kind of computer) each object (system object) may describe or relate to a specific tangible detail in the storage system or in the storage system's processor (e.g., details such as those describing or relating to aspects of operation of the processor's cooling-fan, power switch, cache memory, power supply, disk drive interface, etc.). These tangible objects (nodes) in the storage system can send messages to each other within the storage system and to other objects outside the storage system over the network with which they are operatively coupled. Also, the storage system itself can be an object and interact as a node with other nodes in a network. Storage system or other kinds of objects that do not have special privileges relative to each other are sometimes termed “slave” nodes. By comparison, a “master” node can have certain leadership or control privileges or responsibilities relative to slave nodes in its network. Also, within the storage system, a segregated amount of data, or a file of data, or a data structure, or parts of the file such as a hash number or other data representation or tag such as a file version number, can also be thought of, and treated as an object.
In a client-server computer data storage network, its principal purpose is to store and retrieve data in an efficient, accurate and reliable manner under a wide variety of conditions imposed on the network. Under certain circumstances, particular data introduced to a storage network is to be stored not only on one of the network's nodes or storage systems, but is to be stored on all of them. For example, if there are a number of human users interacting with a network (possibly globally linked via the Internet) having storage system nodes located worldwide, it is important for each user to have a current list of all authorized network users. In this case, this security data needs to be stored on each network storage system node worldwide, and needs to be updated on all nodes if and when data changes (when a new user is added or prior user is dropped).
In the prior art, a technique for accomplishing storage of the same particular data on each of a number of network nodes is offered by Microsoft Inc. and is known as “Active Directory”. Among other drawbacks and differences from the present invention, this offering requires the network's global administrator to specify network topology. This is normally a complicated, cumbersome, and time-consuming task of network topological configuration for the administrator to undertake. Other prior art offerings include, for example, the placing of a file server into the network or domain, where network nodes seek updated file copies from the file server but have drawbacks such as vulnerability to a single point of failure. In this instance, the data is kept in a centralized place, such as a shared directory, which therefore impacts all other nodes if and when the directory becomes inaccessible. Accordingly, if the single vulnerable link fails (file server failure or shared directory inaccessibility) the entire network cannot be updated and therefore fails catastrophically.
Thus, with respect to new or updated data files that are introduced into a client server network, there is a need for a service to replicate or duplicate certain of them in each storage system or node in the network in a manner that both avoids both topological constraints and single point of failure designs. Embodiments of the present invention satisfy this need and are welcome solutions to these problems and shortcomings of the prior art. Embodiments of the present invention include a Directory Provider Service (DPS) which controls, among other things, a Directory Data Base (DDB) distributed throughout a network as disclosed and claimed in two patent applications filed by the assignee of the present invention: “Managing a Distributed Directory Database”, Krishnan et al, U.S. Ser. No. 09/965,430, filed Sep. 27, 2001 and “Resolving Multiple Master Node Conflict in a DDB”, Krishnan et al, U.S. Ser. No. 09/964,977, filed Sep. 27, 2001, both of which are incorporated herein by reference in their respective entireties.